package com.ruoyi.system.service;

import java.util.List;
import java.util.Map;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.domain.*;
import org.apache.ibatis.annotations.Param;

/**
 * 样本信息Service接口
 *
 * @author ruoyi
 * @date 2023-07-03
 */
public interface ILabinfoSampleDataService
{
    /**
     * 查询样本信息
     *
     * @param id 样本信息主键
     * @return 样本信息
     */
    public LabinfoSampleData selectLabinfoSampleDataById(Long id);

    /**
     * 查询样本信息列表
     *
     * @param labinfoSampleData 样本信息
     * @return 样本信息集合
     */
    public List<LabinfoSampleData> selectLabinfoSampleDataList(LabinfoSampleData labinfoSampleData);

    /**
     * 新增样本信息
     *
     * @param labinfoSampleData 样本信息
     * @return 结果
     */
    public int insertLabinfoSampleData(LabinfoSampleData labinfoSampleData);

    /**
     * 修改样本信息
     *
     * @param labinfoSampleData 样本信息
     * @return 结果
     */
    public int updateLabinfoSampleData(LabinfoSampleData labinfoSampleData);

    /**
     * 批量删除样本信息
     *
     * @param ids 需要删除的样本信息主键集合
     * @return 结果
     */
    public int deleteLabinfoSampleDataByIds(Long[] ids);

    /**
     * 删除样本信息信息
     *
     * @param id 样本信息主键
     * @return 结果
     */
    public int deleteLabinfoSampleDataById(Long id);


    List<Map> getReceiveSampleDateList(Map map);

    List<LabinfoSampleData> getSampleList(Map map);


    List<LabinfoSampleData> getSampleListBySampleSerialNumber(String sampleSerialNumber);


    List<Map> getSampleListBySampleDecWay(LabinfoSampleData labinfoSampleData, SysUser sysUser);

    public int shareSamples(LabinfoSampleData labinfoSampleData);

    /**
     * 查询样本信息列表(样本统计页面)
     *
     * @param labinfoSampleData 样本信息
     * @return 样本信息集合
     */
    public List<Map> getLabinfoSampleDataList(LabinfoSampleData labinfoSampleData,Boolean isAdmin);


    /**
     * 保存item数据
     *
     * @param
     * @return 结果
     */
    public AjaxResult saveSample(List<LabinfoSampleData> sampleDataList);


    //注册客户导出
    public List<SampleCustom> exportSampleCustom(LabinfoSampleData labinfoSampleData,SysUser sysUser);

    //内部员工导出
    public List<SampleStaff> exportSampleStaff(LabinfoSampleData labinfoSampleData, SysUser sysUser);

    //admin导出
    public List<SampleAdmin> exportSampleAdmin(LabinfoSampleData labinfoSampleData, SysUser sysUser);

    //根据sampleSerialNumberList查询
    public List<LabinfoSampleData> getSampleListByList(List<String> sampleSerialNumberList);

    List<Map> exportDataList(List<PageFieldUser> pageFieldUserList,LabinfoSampleData labinfoSampleData,SysUser sysUser);
}
